win32: Don't multiply the scroll event deltas by the Windows scroll lines setting...
authorChristoph Reiter <reiter.christoph@gmail.com>
Wed, 21 Nov 2018 19:34:29 +0000 (20:34 +0100)
committerChristoph Reiter <reiter.christoph@gmail.com>
Sat, 8 Dec 2018 14:28:37 +0000 (15:28 +0100)
GTK widgets expect the scroll deltas to be 1 or -1 and calculate a scroll value from that.
Multiplying the delta by the Windows scroll line setting (which defaults to 3) results
in a much larger delta and vastly different behaviour for running a GTK app on Windows
vs on Linux. For example text view and tree view scroll by 9 lines per scroll wheel tick
per default this way while on Linux it is around 3.

Remove the multiplication for now.

See !426 for the gtk3 MR

gdk/win32/gdkevents-win32.c

index ed31ba5b51ef881e5a43d7546f0639c2f650ffb0..712115072af8191ca0999aba3374e88192fec3b4 100644 (file)
@@ -2717,25 +2717,11 @@ gdk_event_translate (MSG  *msg,
 
       if (msg->message == WM_MOUSEWHEEL)
         {
-          UINT lines_multiplier = 3;
           event->scroll.delta_y = (gdouble) GET_WHEEL_DELTA_WPARAM (msg->wParam) / (gdouble) WHEEL_DELTA;
-          /* -1 means that we should scroll in screens, not lines.
-           * Right now GDK doesn't support that.
-           */
-          if (SystemParametersInfo (SPI_GETWHEELSCROLLLINES, 0, &lines_multiplier, 0) &&
-              lines_multiplier != (UINT) -1)
-            event->scroll.delta_y *= (gdouble) lines_multiplier;
         }
       else if (msg->message == WM_MOUSEHWHEEL)
         {
-          UINT chars_multiplier = 3;
           event->scroll.delta_x = (gdouble) GET_WHEEL_DELTA_WPARAM (msg->wParam) / (gdouble) WHEEL_DELTA;
-          /* There doesn't seem to be any indication that
-           * h-scroll has an equivalent of the "screen" mode,
-           * indicated by multiplier being (UINT) -1.
-           */
-          if (SystemParametersInfo (SPI_GETWHEELSCROLLCHARS, 0, &chars_multiplier, 0))
-            event->scroll.delta_x *= (gdouble) chars_multiplier;
         }
       /* Positive delta scrolls up, not down,
          see API documentation for WM_MOUSEWHEEL message.